PER.rover
Class DetectMotionAction

java.lang.Object
  extended byPER.rover.DetectMotionAction
All Implemented Interfaces:
Action, java.io.Serializable

public class DetectMotionAction
extends java.lang.Object
implements Action

This Action makes it easy to detect motion. The version of the Stargate/Stayton code on the robot you use must be at least 2.0.0.

While trying to detect motion, the rover is constantly taking pictures at 176x144. It adds up the brightness in 16x16 pixel blocks. The rover sends back the average difference between successive frames for all of the blocks. The DetectMotionAction waits until the average difference is above the defined threshold for at least a minimum number of blocks, or the specified timeout is exceeded. The Action is considered a success if motion is detected before the timeout is reached.

See Also:
Serialized Form

Constructor Summary
DetectMotionAction(int timeToWait)
          Creates a new instance of DetectMotionAction.
DetectMotionAction(int timeToWait, int threshold, int minimumBlocks)
          Creates a new instance of DetectMotionAction Waits to detect motion in the specified time interval using user-defined parameters.
 
Method Summary
 boolean doAction(Rover r)
          Tries to start the action.
 long getImageUpdateTime()
          Lets you know when the last image was taken by this action.
 java.awt.image.BufferedImage getRecentImage()
          Returns the most recent image taken by this Action.
 int getReturnValue()
          The return value of the Action.
 java.lang.String getShortSummary()
          Provides a shortened version of the summary returned by getSummary.
 java.lang.String getSummary()
          Provides a textual explanation of the Action, such as "turn 90 degrees"
 int getTime()
          Gets the maximum time that it will try to detect motion for in milliseconds.
 int getTimeRemaining()
          How much time until the action finishes (in milliseconds), if it has already started.
 boolean isCompleted()
          Whether the action has completed.
 boolean isSuccess()
          For this action, success is considered detecting motion.
 void kill()
          Emergency stop - end the action immediately, if it's running.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DetectMotionAction

public DetectMotionAction(int timeToWait)
Creates a new instance of DetectMotionAction. Waits to detect motion in the specified time interval using default parameters. By default, 5 blocks need to change in brightness by at least 8 for it to be considered motion.

Parameters:
timeToWait - How many milliseconds to detect motion for.

DetectMotionAction

public DetectMotionAction(int timeToWait,
                          int threshold,
                          int minimumBlocks)
Creates a new instance of DetectMotionAction Waits to detect motion in the specified time interval using user-defined parameters.

Parameters:
timeToWait - How many milliseconds to detect motion for.
threshold - How much the brightness must change in a block for it to be considered motion.
minimumBlocks - How many blocks must be above the threshold for the Action to terminate.
Method Detail

doAction

public boolean doAction(Rover r)
Description copied from interface: Action
Tries to start the action. Returns whether the action started.

Specified by:
doAction in interface Action

getTime

public int getTime()
Gets the maximum time that it will try to detect motion for in milliseconds.

Specified by:
getTime in interface Action
Returns:
If the action has not completed, the amount of time the user allowed the action to run is returned. If the action has succeeded, the actual time run is returned.

getSummary

public java.lang.String getSummary()
Description copied from interface: Action
Provides a textual explanation of the Action, such as "turn 90 degrees"

Specified by:
getSummary in interface Action

getShortSummary

public java.lang.String getShortSummary()
Description copied from interface: Action
Provides a shortened version of the summary returned by getSummary. For example, getSummary may return something like "Turn left and drive about 39 inches toward the red landmark," whereas getShortSummary might just return "Drive toward a landmark."

Specified by:
getShortSummary in interface Action

getReturnValue

public int getReturnValue()
Description copied from interface: Action
The return value of the Action. Zero is a success. Negative implies one of this class's constants. Other values should be interpreted as appropriate.

Specified by:
getReturnValue in interface Action
See Also:
RoverState, ActionConstants

isSuccess

public boolean isSuccess()
For this action, success is considered detecting motion. This is only defined if isCompleted() returns true.

Specified by:
isSuccess in interface Action
Returns:
true only if motion was detected in the time interval.

isCompleted

public boolean isCompleted()
Description copied from interface: Action
Whether the action has completed. Undefined until doAction has been called.

Specified by:
isCompleted in interface Action

kill

public void kill()
Description copied from interface: Action
Emergency stop - end the action immediately, if it's running.

Specified by:
kill in interface Action

getTimeRemaining

public int getTimeRemaining()
Description copied from interface: Action
How much time until the action finishes (in milliseconds), if it has already started. Undefined behavior if the action has not yet begun, or has finished.

Specified by:
getTimeRemaining in interface Action

getImageUpdateTime

public long getImageUpdateTime()
Description copied from interface: Action
Lets you know when the last image was taken by this action. If the Action does not take pictures or the first picture has not yet been taken, will return 0.

Specified by:
getImageUpdateTime in interface Action
Returns:
the system time in milliseconds when the last image was taken or 0 if no images have been taken

getRecentImage

public java.awt.image.BufferedImage getRecentImage()
Description copied from interface: Action
Returns the most recent image taken by this Action. The image will be null if the Action does not take pictures or the first picture has not yet been taken.

Specified by:
getRecentImage in interface Action
Returns:
the most recent picture taken by the Action.